package com.itheima.reggie.utils;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;

/**
 * 短信发送工具类
 */


	public class SMSUtils {


		public static void main(String[] args) {
			//假如我这里是  用户点击了 获取验证码
			System.out.println("用户点击获取验证码");
			// 1:获取手机号
			String phoneNum = "15933797478";//前端页面获取
			//2: 产生验证码并发送
			// 怎么产生验证码---  之前web时候 见到怎么产生的  工具类
			// ValidateCodeUtils 产生纯数字验证码 和 数字字母验证码
			//  一般登录用哪个验证码? 纯数字
			Integer code = ValidateCodeUtils.generateValidateCode(4);
			// code 就是验证码
			System.out.println("产生验证码是:"+code);//从控制台看验证码
			//假设发成功了
			//  生产的 code 要存到 session中
			// 怎么发短信?
			// 安装阿里的规范发
			//签名
			String signName = "传智健康项目基手机号登录";
			String templateCode = "SMS_175532136";
			// 通过阿里云给 指定的手机 发生指定签名+模板的验证码
			//循环 定时器 一分钟发一次
			sendMessage(signName,templateCode,phoneNum,code+"");
			System.out.println("短信已经发完了");



		}
		/**
		 * 发送短信
		 * @param signName 签名
		 * @param templateCode 模板
		 * @param phoneNumbers 手机号
		 * @param param 参数
		 */
		public static void sendMessage(String signName,
									   String templateCode,String phoneNumbers,String param){
			DefaultProfile profile = DefaultProfile
					.getProfile("cn-hangzhou",
							"",
							"");
			IAcsClient client = new DefaultAcsClient(profile);

			SendSmsRequest request = new SendSmsRequest();
			request.setSysRegionId("cn-hangzhou");
			request.setPhoneNumbers(phoneNumbers);
			request.setSignName(signName);
			request.setTemplateCode(templateCode);
			request.setTemplateParam("{\"code\":\""+param+"\"}");
			try {
				SendSmsResponse response = client.getAcsResponse(request);
				System.out.println(response.getMessage());
				if(response.getMessage().contains("OK")){
					System.out.println("短信发送成功");
				}
			}catch (ClientException e) {
				e.printStackTrace();
			}
		}

	}

